// Content script for YouTube Cookie Exporter
// 在YouTube页面上运行的脚本

(function() {
    'use strict';

    // 检查是否在YouTube页面
    function isYouTubePage() {
        return window.location.hostname.includes('youtube.com') || 
               window.location.hostname.includes('youtube-nocookie.com');
    }

    // 初始化内容脚本
    function init() {
        if (!isYouTubePage()) {
            return;
        }

        console.log('YouTube Cookie Exporter content script loaded');

        // 监听来自popup的消息
        chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
            if (request.action === 'getPageInfo') {
                sendResponse({
                    url: window.location.href,
                    hostname: window.location.hostname,
                    title: document.title
                });
            } else if (request.action === 'refreshPage') {
                // 刷新页面
                window.location.reload();
                sendResponse({success: true});
            }
        });

        // 添加页面检测功能
        addPageDetection();
        
        // 添加页面刷新监听
        addPageRefreshListener();
    }

    // 添加页面检测功能
    function addPageDetection() {
        // 创建检测元素
        const detector = document.createElement('div');
        detector.id = 'youtube-cookie-exporter-detector';
        detector.style.display = 'none';
        detector.setAttribute('data-page-type', getPageType());
        document.body.appendChild(detector);

        // 监听页面变化（YouTube是SPA）
        let lastUrl = window.location.href;
        const observer = new MutationObserver(function(mutations) {
            if (window.location.href !== lastUrl) {
                lastUrl = window.location.href;
                detector.setAttribute('data-page-type', getPageType());
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    }

    // 获取页面类型
    function getPageType() {
        const path = window.location.pathname;
        
        if (path === '/' || path === '/feed/trending') {
            return 'home';
        } else if (path.startsWith('/watch')) {
            return 'video';
        } else if (path.startsWith('/channel/') || path.startsWith('/c/') || path.startsWith('/user/')) {
            return 'channel';
        } else if (path.startsWith('/playlist')) {
            return 'playlist';
        } else if (path.startsWith('/search')) {
            return 'search';
        } else {
            return 'other';
        }
    }

    // 获取页面信息
    function getPageInfo() {
        return {
            url: window.location.href,
            hostname: window.location.hostname,
            title: document.title,
            pageType: getPageType(),
            timestamp: Date.now()
        };
    }

    // 检查扩展上下文是否有效
    function isExtensionContextValid() {
        try {
            return chrome.runtime && chrome.runtime.id;
        } catch (error) {
            return false;
        }
    }

    // 安全发送消息到background script
    function safeSendMessage(message) {
        if (!isExtensionContextValid()) {
            console.log('扩展上下文无效，跳过发送消息');
            return;
        }
        
        try {
            chrome.runtime.sendMessage(message);
        } catch (error) {
            console.log('发送消息失败:', error.message);
        }
    }

    // 添加页面刷新监听
    function addPageRefreshListener() {
        let pageLoadTimeout;
        let isPageLoaded = false;
        
        // 监听页面刷新事件
        window.addEventListener('beforeunload', function() {
            console.log('YouTube页面即将刷新');
            isPageLoaded = false;
            safeSendMessage({
                action: 'pageRefresh',
                url: window.location.href,
                timestamp: Date.now()
            });
        });
        
        // 页面加载完成处理函数
        function handlePageLoaded() {
            if (isPageLoaded) {
                console.log('页面已加载，跳过重复处理');
                return;
            }
            
            isPageLoaded = true;
            console.log('YouTube页面加载完成，等待3秒后导出');
            
            // 延迟3秒确保页面完全加载
            setTimeout(() => {
                console.log('开始自动导出Cookie');
                safeSendMessage({
                    action: 'pageLoaded',
                    url: window.location.href,
                    timestamp: Date.now()
                });
            }, 10000);
        }
        
        // 监听页面加载事件
        window.addEventListener('load', function() {
            console.log('YouTube页面load事件触发');
            handlePageLoaded();
        });
        
        // 监听DOM内容加载完成
        document.addEventListener('DOMContentLoaded', function() {
            console.log('YouTube页面DOMContentLoaded事件触发');
            handlePageLoaded();
        });
        
        // 监听YouTube特定的导航事件
        window.addEventListener('yt-navigate-finish', function() {
            console.log('YouTube页面导航完成');
            handlePageLoaded();
        });
        
        // 如果页面已经加载完成，立即处理
        if (document.readyState === 'complete') {
            console.log('页面已完全加载，立即处理');
            handlePageLoaded();
        }
    }

    // 检查cookie可用性
    function checkCookieAvailability() {
        return new Promise((resolve) => {
            chrome.cookies.getAll({domain: window.location.hostname}, function(cookies) {
                resolve({
                    available: cookies.length > 0,
                    count: cookies.length,
                    error: chrome.runtime.lastError ? chrome.runtime.lastError.message : null
                });
            });
        });
    }

    // 暴露全局函数供popup使用
    window.youtubeCookieExporter = {
        getPageInfo: getPageInfo,
        checkCookieAvailability: checkCookieAvailability,
        isYouTubePage: isYouTubePage
    };

    // 初始化
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
})();
